package com.whfc.ms.api.emp.service;


import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppPayrollAttachAddDTO;
import com.whfc.emp.dto.AppPayrollDTO;
import com.whfc.emp.dto.AppPayrollDetailDTO;
import com.whfc.emp.dto.AppPayrollEmpDTO;
import com.whfc.emp.param.AppPayrollAddParam;
import com.whfc.emp.param.AppPayrollDetailEditParam;
import com.whfc.emp.param.AppPayrollListParam;
import com.whfc.entity.dto.OssPathDTO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

/**
 * @ClasssName MsPayrollService
 * @Description 人员工资
 * @Author hw
 * @Date 2020/11/26 14:20
 * @Version 1.0
 */
public interface MsPayrollService {

    /**
     * 工资发放记录列表
     *
     * @param request
     * @return
     */
    PageData<AppPayrollDTO> list(AppPayrollListParam request);

    /**
     * 工资发放详情
     *
     * @param payrollId
     * @return
     */
    AppPayrollDetailDTO detail(Integer payrollId);

    /**
     * 添加工资记录
     *
     * @param request
     */
    void add(AppPayrollAddParam request);

    /**
     * 修改员工工资信息
     *
     * @param request
     */
    void edit(AppPayrollDetailEditParam request);

    /**
     * 删除工资记录
     *
     * @param payrollId
     */
    void del(Integer payrollId);

    /**
     * 提交工资发放
     *
     * @param payrollId
     */
    void commit(Integer payrollId);

    /**
     * 添加工资发放附件
     *
     * @param filename
     * @param fis
     * @param payrollId
     * @return
     * @throws IOException
     */
    AppPayrollAttachAddDTO attachAdd(String filename, InputStream fis, Integer payrollId);

    /**
     * 删除工资附件
     *
     * @param attachId
     */
    void attachDel(Integer attachId);


    /**
     * 导出工资详情
     *
     * @param payrollId
     * @return
     * @throws IOException
     */
    OssPathDTO export(Integer payrollId) throws Exception;

    /**
     * 导入工资模板
     *
     * @param file
     * @param payrollId
     * @param clearingForm
     * @throws IOException
     */
    void importExcel(MultipartFile file, Integer payrollId, Integer clearingForm) throws IOException;

    /**
     * 根据人员id查找工资发放列表
     *
     * @param empId
     * @return
     */
    ListData<AppPayrollEmpDTO> getPayrollList(Integer empId);

    /**
     * 发放工资人员列表
     * @param payrollId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppPayrollEmpDTO> empPayrollList(Integer payrollId, Integer pageNum, Integer pageSize);
}
